home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 23 / AMIGAplus Sonderheft 23 (2000)(Falke)(DE)[!].iso / Tools / Text-Viewer / Notes / deutsch / Violinenschlüssel.rexx < prev   
OS/2 REXX Batch file  |  1999-11-06  |  43KB  |  1,425 lines

  1. /* Unterprogramm für "Noten.pprx" */
  2.  
  3. signal on halt
  4. signal on break_c
  5. signal on break_e
  6. signal on break_d
  7. call ppm_SetStyle(N)
  8.  
  9. noteneingabe:
  10.     /* Kleinster notenabstand */
  11.     sysart = "Notensystemart:2"
  12.     systemart = ppm_Getform("Bitte noch einmal die gewählte Systemart eingeben. (2, 1v oder 1b)", 3, sysart)
  13.     select
  14.     when systemart == '2' then zdist = 4
  15.     when systemart == '1v' then zdist = 2
  16.     when systemart == '1b' then zdist = 2
  17.     otherwise noteneingabe()
  18.     end
  19.     zdist2 = zdist-2
  20.     xgrdform = "(1,2,4,8 oder 16)"
  21.     xgrd = ppm_GetForm("Bitte für den kleinsten Notenwert eingeben ... (NICHTS=ABBRUCH)", 3, xgrdform)
  22.     if xgrd == '' then  exit_msg("Abbruch")
  23.     select
  24.      when xgrd == '1' then xg =0.7
  25.      when xgrd == '2' then xg =1.4
  26.      when xgrd == '4' then xg =2.8
  27.      when xgrd == '8' then xg =5.6
  28.      when xgrd == '16' then xg =11.2
  29.      otherwise notenwert()
  30.     end
  31.  
  32.    /* Punktgröße der Noten */
  33.    notepkt = 26
  34.    call ppm_SetJustification(0)
  35.    
  36.    zz = 0   /* Zeilenzähler */
  37.    notex = 0
  38.    notey = 0
  39.    page = ppm_CurrentPage()
  40.  
  41. clickpos:
  42.    res = ppm_GetUserText(2, "Manuell oder an Box ausrichten ? m/b")
  43.  
  44.    if res == 'M' then res = 'm'
  45.    if res == 'B' then res = 'b'
  46.  select
  47.    when res == 'm' then
  48.      do
  49.        clickpos = ppm_GetClickPosition("Bitte die Stelle anklicken wo ich beginnen soll...")
  50.        if clickpos == 0 then
  51.            do
  52.            exit_msg("Falsche Eingabe !! ENDE !!")
  53.            end
  54.        else
  55.          do
  56.            notey = word(clickpos, 2)
  57.            notex = word(clickpos, 1)
  58.            if notex < 2.5 then notex = 2.5
  59.            xw = notex
  60.            yw = notey
  61.            if systemart ~= '2' then
  62.             do
  63.              if notey <= 3.3  then zz= 0   /* zz ist ZeilenZähler */
  64.              if ((notey > 3.5)&(notey < 5.3)) then zz = 2
  65.              if ((notey > 5.5)&(notey < 7.3)) then zz = 4
  66.              if ((notey > 7.5)&(notey < 9.3)) then zz = 6
  67.              if ((notey > 9.5)&(notey < 11.3)) then zz = 8
  68.              if ((notey > 11.5)&(notey < 13.3)) then zz = 10
  69.              if ((notey > 13.5)&(notey < 15.3)) then zz = 12
  70.              if ((notey > 15.5)&(notey < 17.3)) then zz = 14
  71.              if ((notey > 17.5)&(notey < 19.3)) then zz = 16
  72.              if ((notey > 19.5)&(notey < 21.3)) then zz = 18
  73.              if ((notey > 21.5)&(notey < 23.3)) then zz = 20
  74.              if ((notey > 23.5)&(notey < 25.3)) then zz = 22
  75.              if notey > 25.3 then noteneingabe()
  76.             end
  77.            else
  78.             do
  79.              if notey <= 3.3  then zz= 0
  80.              if ((notey > 5.5)&(notey < 7.3)) then zz = 4
  81.              if ((notey > 9.5)&(notey < 11.3)) then zz = 8
  82.              if ((notey > 13.5)&(notey < 15.3)) then zz = 12
  83.              if ((notey > 17.5)&(notey < 19.3)) then zz = 16
  84.              if ((notey > 21.5)&(notey < 23.3)) then zz = 20
  85.             end
  86.          end
  87.  
  88.      end
  89.    when res == 'b' then
  90.      do
  91.         clickbox = ppm_ClickOnBox("Bitte eine Box anklicken, an der Stelle, wo es weitergeht ...")
  92.         pos = ppm_GetBoxPosition(clickbox)
  93.         notex = word(pos, 1)
  94.         notey = word(pos, 2)
  95.         xw = notex
  96.         yw = notey
  97.         call ppm_BoxAtPosn(notex, notey, page)
  98.         if notey <= 3.3  then zz= 0
  99.         if ((notey > 5.5)&(notey < 9.3)) then zz = 4
  100.         if ((notey > 9.5)&(notey < 13.3)) then zz = 8
  101.         if ((notey > 13.5)&(notey < 17.3)) then zz = 12
  102.         if ((notey > 17.5)&(notey < 21.3)) then zz = 16
  103.         if ((notey > 21.5)&(notey < 25.3)) then zz = 20
  104.  
  105.         if notex <= 1 then
  106.         do
  107.           noteneingabe()
  108.         end
  109.      end
  110.    otherwise clickpos()
  111.  end
  112.  
  113.  
  114.    /* Zeigerbox */
  115.  
  116.    zbid = ppm_CreateBox(notex, zz+0.5, 0.3, 1, 0)
  117.    call ppm_SetSize(26)
  118.    zbn = ppm_GetBoxName(zbid)
  119.    call ppm_TextIntoBox(zbn, '5')
  120.  
  121.  
  122. notenwert:
  123.  
  124.    do forever
  125.            cr = '0a'x
  126.            form = "Wert Name ['A'ufl.]"
  127.            call ppm_SetBoxPosition(zbid, notex, zz+0.5)
  128.            call ppm_UpdateScreen()
  129.            eingabe = ppm_GetForm("Bitte für die Noten eingeben ...(nichts=Abbruch) ", 7, form)
  130.            if eingabe = '' then
  131.            do
  132.             call ppm_DeleteBox(zbid)
  133.             exit_msg()
  134.            end
  135.            nw = word(eingabe, 1)
  136.            nn = word(eingabe, 2)
  137.            if nw == 'P' then nw = 'p'
  138.            al = word(eingabe, 3)
  139.            if al == 'A' then al = 'a'
  140.            IF nw == 'D' then nw = 'd'
  141.            if nw == 'LEFT' then nw = 'left'
  142.            if nw == 'L' then nw = 'l'
  143.            if nw == 'T' then nw = 't'
  144.            if nn == 'T' then nn = 't'
  145.            if nw == "NEU" then nw = "neu"
  146.  
  147.       select
  148.         when nn=='GB2' then nn = 'Gb2'
  149.         when nn=='AB2' then nn = 'Ab2'
  150.         when nn=='DB3' then nn = 'Db3'
  151.         when nn=='EB3' then nn = 'Eb3'
  152.         when nn=='GB3' then nn = 'Gb3'
  153.         when nn=='AB3' then nn = 'Ab3'
  154.         when nn=='DB4' then nn = 'Db4'
  155.         when nn=='EB4' then nn = 'Eb4'
  156.         when nn=='GB4' then nn = 'Gb4'
  157.         when nn=='AB4' then nn = 'Ab4'
  158.         when nn=='DB5' then nn = 'Db5'
  159.         when nn=='EB5' then nn = 'Eb5'
  160.         otherwise NOP
  161.       end
  162.  
  163.         /* x-Abstände der Noten zueinander */
  164.     select
  165.       when nw=='s' then
  166.           do
  167.           xw = xg/16
  168.           nw='x'
  169.           yv = 0
  170.           end
  171.       when nw=='S' then
  172.           do
  173.           xw = xg/16
  174.           nw='X'
  175.           yv = 0.47
  176.           end
  177.       when nw=='a' then
  178.           do
  179.           xw = xg/8
  180.           nw='e'
  181.           yv = 0
  182.           end
  183.       when nw=='A' then
  184.           do
  185.           xw = xg/8
  186.           nw='E'
  187.           yv = 0.47
  188.           end
  189.       when nw=='v' then
  190.           do
  191.           xw = xg/4
  192.           nw='q'
  193.           yv = 0
  194.           end
  195.       when nw=='V' then
  196.           do
  197.           xw = xg/4
  198.           nw='Q'
  199.           yv = 0.47
  200.           end
  201.       when nw=='h' then
  202.           do
  203.           xw = xg/2
  204.           yv = 0
  205.           end
  206.       when nw=='H' then
  207.           do
  208.           xw = xg/2
  209.           yv = 0.47
  210.           end
  211.       when nw=='g' then
  212.           do
  213.           xw = xg
  214.           nw='w'
  215.           yv = 0
  216.           end
  217.       when nw=='G' then
  218.           do
  219.           xw = xg
  220.           nw='W'
  221.           yv = 0.47
  222.           end
  223.  
  224.      /* Sprung an den Anfang der Zeile */
  225.       when nw == 'left' then
  226.           do
  227.            call ppm_SetPagePosition(0, zz+1)
  228.           end
  229.  
  230.      /* Punkt nach der Note - muß als erstes eingegeben werden falls gewünscht
  231.         den nötigen Freiraum mit "sp" eingeben */
  232.  
  233.       when nw == 'pk' then
  234.           do
  235.             if notex < 3 then
  236.             do
  237.               notex = bakx
  238.               zz = zz - zdist
  239.               call ppm_SetSize(25)
  240.               box#id = ppm_CreateBox(notex+0.4, yw+zz+0.26-yv, 0.3, 0.9, 0)
  241.               call ppm_SetSize(20)
  242.               call ppm_TextIntoBox(box#id, 'd')
  243.             end
  244.             else
  245.             do
  246.               call ppm_SetSize(25)
  247.               box#id = ppm_CreateBox(notex-xw+0.4, yw+zz+0.26-yv, 0.3, 0.9, 0)
  248.               call ppm_SetSize(20)
  249.               call ppm_TextIntoBox(box#id, 'd')
  250.             end
  251.            select
  252.                when nn == '1' then
  253.                do
  254.                xw = xg
  255.                notex = notex+xw
  256.                end
  257.                when nn == '2' then
  258.                do
  259.                xw = xg/2
  260.                notex = notex+xw
  261.                end
  262.                when nn == '4' then
  263.                do
  264.                xw = xg/4
  265.                notex = notex+xw
  266.                end
  267.                when nn == '8' then
  268.                do
  269.                xw = xg/8
  270.                notex = notex+xw
  271.                end
  272.                when nn == '16' then
  273.                do
  274.                xw  = xg/16
  275.                notex = notex+xw
  276.                end
  277.                when nn == 't' then
  278.                do
  279.                xw  = 0.2
  280.                notex = notex+xw
  281.                end
  282.                otherwise notenwert()
  283.            end
  284.            if notex >=18.7 then
  285.                do
  286.                  notex = 2.5
  287.                  zz = zz + zdist
  288.                end
  289.            px = notex - 4
  290.            py = zz-1
  291.            if px < 0 then px = 0
  292.            call ppm_SetPagePosition(px, p